package br.trainee.web.dao.impl;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.inject.Inject;

import oracle.jdbc.internal.OracleTypes;
import br.trainee.web.anotacoes.ConnectionQualifier;
import br.trainee.web.enumeradores.TipoConexao;
import br.trainee.web.vo.PerfilVO;
import br.trainee.web.vo.StatusVO;
import br.trainee.web.vo.UsuarioVO;

public class UsuarioDAO_OLD {
	
	@Inject
	@ConnectionQualifier(tipoConexao = TipoConexao.ORACLE)
	private Connection conexao;
	
	@Inject
	private Logger log;
	
	private CallableStatement cstm;
	
	private ResultSet rs;
	


	//@Override
	public UsuarioVO verificaUsuarioLogado(UsuarioVO usuarioEntrada) {
		
		UsuarioVO usuario = null;
		
		try {
			cstm = conexao.prepareCall("{call pr_consultar_usuario_logado(?,?,?)}");
			
			cstm.setString(1, usuarioEntrada.getLogin());
			cstm.setString(2, usuarioEntrada.getSenha());
			cstm.registerOutParameter(3, OracleTypes.CURSOR);
			
			if(!cstm.execute()){
				
				rs = (ResultSet) cstm.getObject(3);
				
				if(rs.next()){
					usuario = new UsuarioVO();
					
					usuario.setIdPessoa(rs.getLong("id_pessoa_usuario"));
					usuario.setLogin(rs.getString("login"));
					usuario.setSenha(rs.getString("senha"));
					usuario.setStatusUsuario(new StatusVO());
					usuario.getStatusUsuario().setIdStatus(rs.getLong("status_usuario"));
					
					PerfilVO perfil = new PerfilVO();
					perfil.setIdPerfil(rs.getLong("id_perfil"));
					perfil.setNomePerfil(rs.getString("nome_perfil"));
					perfil.setDescPerfil(rs.getString("desc_perfil"));
					perfil.setStatus(new StatusVO());
					perfil.getStatus().setIdStatus(rs.getLong("status_perfil"));
					
					usuario.setPerfil(perfil);
					
					usuario.setNomePessoa(rs.getString("nome_pessoa"));
					//usuario.setRgPessoa(rs.getString("rg_pessoa"));
					//usuario.setCpfPessoa(rs.getLong("cpf_pessoa"));
					usuario.setStatusPessoa(new StatusVO());
					usuario.getStatusPessoa().setIdStatus(rs.getLong("status_pessoa"));
					
					
					
					
					return usuario;
				}
			}
			
		} catch (SQLException e) {

			log.log(Level.SEVERE, e.getMessage());
		}
		finally{
			
			try {
				
				cstm.close();
				conexao.close();
				
				if(rs != null){
					rs.close();
				}
				
			} catch (SQLException e) {
				
				log.log(Level.SEVERE, e.getMessage());
			}
			
			
		}
		
		
		
		return usuario;
	}

}
